#ifndef IRIVIAPROJECT_H
#define IRIVIAPROJECT_H

#include "RIVIAEntity_global.h"
#include <QMutex>

class QImage;

namespace cv
{
class Mat;
}

class RIVIAENTITYSHARED_EXPORT IRIVIAProject
{
public:
    static IRIVIAProject* getInstance();
    static void freeInstance();

private:
    static IRIVIAProject* m_pInstance;
    static QMutex m_lockMutex;

public:
    virtual QImage getDisplayQImage() = 0;

    virtual void addImage(const cv::Mat &image) = 0;
    virtual void addLayer(const cv::Mat &image) = 0;
    virtual cv::Mat getCurMat() = 0;
    virtual cv::Mat getCurMatProc() = 0;
    virtual cv::Mat getCurAllMatProc() = 0;
    virtual void updateImageByImageProc() = 0;

    virtual void deleteImageByID(int nID) = 0;
    virtual void deleteCurLayer() = 0;

    virtual void setCurImageID(int nImageID) = 0;
    virtual void setCurLayerID(int nLayerID) = 0;
};

#endif // IRIVIAPROJECT_H
